本文提供此 API 參考文件的補充備註。
類別 ObservableCollection<T> 代表動態數據收集,可在新增或移除專案時或重新整理整個清單時提供通知。
在許多情況下,您使用的資料是物件的集合。 例如,數據系結中的常見案例是使用 ItemsControl ,例如 ListBox、 ListView或 TreeView 來顯示記錄集合。
您可以列舉實作 IEnumerable 介面的任何集合。 不過,若要設定動態繫結,讓集合中的插入或刪除作業自動更新 UI,則集合必須實作 INotifyCollectionChanged 介面。 這個介面會公開CollectionChanged事件,這個事件應該當基礎集合發生變更時觸發。
ObservableCollection<T> 類別是一種數據收集類型,實作了 INotifyCollectionChanged 介面。
實作您自己的集合之前,請考慮使用 ObservableCollection<T> 或其中一個現有的集合類別,例如 List<T>、Collection<T> 和 BindingList<T> 等。 如果您有進階案例,而且想要實作自己的集合,請考慮使用 IList,以提供可依索引個別存取之物件的非泛型集合。 實作 IList 可提供數據系結引擎的最佳效能。
備註
若要完全支援將數據值從系結來源物件傳輸到系結目標,支援可系結屬性的集合中的每個物件都必須實作適當的屬性變更通知機制,例如 INotifyPropertyChanged 介面。
如需詳細資訊,請參閱 資料繫結概述 中的“繫結至集合”。
XAML 使用方式的注意事項
ObservableCollection<T> 可以在 Windows Presentation Foundation 中做為 XAML 物件專案,在 3.0 和 3.5 版中使用。 不過,使用方式有相當大的限制。
ObservableCollection<T> 必須是根元素,因為用來指定泛型
x:TypeArguments限制型別的 ObservableCollection<T> 屬性只支持作為根元素的物件元素。您必須宣告
x:Class屬性(這需要此 XAML 檔案的建置動作必須是Page或其他編譯 XAML 的建置動作)。ObservableCollection<T> 位於一開始未對應至預設 XML 命名空間的命名空間和元件中。 您必須將前置詞對應到命名空間和元件,然後在ObservableCollection<T> 的對象元素標籤上使用該前置詞。
在應用程式中使用 ObservableCollection<T> XAML 功能更直接的方式,就是宣告衍生自 ObservableCollection<T>的您自己的非泛型自定義集合類別,並將它限制為特定類型。 然後映射包含這個類別的元件,並在 XAML 中將其參考為物件元素。